import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 98152
 * Date: 2024-09-11
 * Time: 9:04
 */
public class SeqList {
    private int[] array;
    private int usedsize;//数组已使用长度
    public SeqList() {
        array = new int[10];
    }
    //尾插
    public void SLPushBack(int pos) {
        if(usedsize == array.length) {
            //扩容
            array = Arrays.copyOf(array, 2*array.length);
        }
        array[usedsize++] = pos;
    }
    //头插
    public void SLPushFront(int pos) {
        if(usedsize == array.length) {
            //扩容
            array = Arrays.copyOf(array, 2*array.length);
        }
        for(int i = usedsize; i > 0; i--) {
            array[i] = array[i-1];
        }
        array[0] = pos;
        usedsize++;
    }
    //从指定位置前面插入
    public void SLPushFront(int pos, int index) {
        if(usedsize == array.length) {
            //扩容
            array = Arrays.copyOf(array, 2*array.length);
        }
        for(int i = usedsize; i > index; i--) {
            array[i] = array[i-1];
        }
        array[index] = pos;
        usedsize++;
    }
    //按值查找
    public int SLcheck(int pos) {
        for(int i = 0; i < usedsize; i++) {
            if(array[i] == pos) {
                return i;
            }
        }
        return -1;
    }
    //按值删
    public void SLErase(int pos) {
        int index = SLcheck(pos);
        if(index == -1) {
            return;
        }
        for(int i = index; i<usedsize-1;i++) {
            array[i] = array[i+1];
        }
        usedsize--;
    }
    //尾删
    public void SLPopBack() {
        usedsize--;
    }
    //头删
    public void SLPopFront() {
        for(int i = 0; i < usedsize-1; i++) {
            array[i] = array[i+1];
        }
        usedsize--;
    }
    //求表长
    public int getUsedsize() {
        return this.usedsize;
    }
    //按位置查找
    public int SLFind(int index) {
        return array[index];
    }
    public int[] getArray() {
        return this.array;
    }
    //将一个有序顺序表放入当前有序顺序表中，合并成一个有序顺序表
    public void mergeArrays(int[] array, int usedsize) {
        int i = 0;
        int j = 0;
        while(i < this.usedsize && j < usedsize) {
            if(this.array[i] < array[j]) {
                i++;
                continue;
            }
            //插在array1[i]前面
            SLPushFront(array[j],i);
            j++;
        }
        if(j != usedsize) {
            for(;j<usedsize;j++) {
                //尾插
                SLPushBack(array[j]);
            }
        }
    }
    //往递增顺序表中插入一个数
    public void insert(int pos) {
        if(this.array[0] > pos) {
            //头插
            SLPushFront(pos);
            return;
        }
        for(int i = 1; i < this.usedsize; i++) {
            if(this.array[i-1] <= pos && this.array[i] >= pos) {
                //从指定位置插入
                SLPushFront(pos,i);
                return;
            }
        }
        this.array[this.usedsize] = pos;
    }
}
